/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.mybeans;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;

/**
 *
 * @author avbravo
 */
public class RecibesDetallesBeans {

    private int IdRecibo;
    private String IdMunicipio;
    private String IdRegimen;
    private double Valor;
    private int Cantidad;
    private double Pago;
    private double Exoneracion;
    private double Saldo;
    private String EsRecargo;
    private String Estatus;
    private String Periodo;
    private double SoloMorosidad;
    Sesion sesion;
    static List<String> ListaIdRegimen = new ArrayList<String>();
    static List<String> ListaRegimen = new ArrayList<String>();
    static List<Double> ListaValor = new ArrayList<Double>();
    static List<Double> ListaPago = new ArrayList<Double>();
    static List<Integer> ListaCantidad = new ArrayList<Integer>();
    static List<Double> ListaExoneracion = new ArrayList<Double>();
    static List<Double> ListaSaldo = new ArrayList<Double>();
    static List<Double> ListaSaldoAnterior = new ArrayList<Double>();
    static List<String> ListaEsRecargo = new ArrayList<String>();
    static List<String> ListaComentario = new ArrayList<String>();
    static List<String> ListaEstatus = new ArrayList<String>();
    static List<String> ListaPeriodo = new ArrayList<String>();
    static List<Double> ListaSoloMorosidad = new ArrayList<Double>();
    static int NumeroRegistrosLista = -1;

    public RecibesDetallesBeans() {
        sesion = new Sesion();
    }

    public static List<String> getListaEstatus() {
        return ListaEstatus;
    }

    public static void setListaEstatus(List<String> ListaEstatus) {
        RecibesDetallesBeans.ListaEstatus = ListaEstatus;
    }

    public static List<String> getListaPeriodo() {
        return ListaPeriodo;
    }

    public static void setListaPeriodo(List<String> ListaPeriodo) {
        RecibesDetallesBeans.ListaPeriodo = ListaPeriodo;
    }

    public static List<Double> getListaSoloMorosidad() {
        return ListaSoloMorosidad;
    }

    public static void setListaSoloMorosidad(List<Double> ListaSoloMorosidad) {
        RecibesDetallesBeans.ListaSoloMorosidad = ListaSoloMorosidad;
    }

    public String getEstatus() {
        return Estatus;
    }

    public void setEstatus(String Estatus) {
        this.Estatus = Estatus;
    }

    public String getPeriodo() {
        return Periodo;
    }

    public void setPeriodo(String Periodo) {
        this.Periodo = Periodo;
    }

    public double getSoloMorosidad() {
        return SoloMorosidad;
    }

    public void setSoloMorosidad(double SoloMorosidad) {
        this.SoloMorosidad = SoloMorosidad;
    }

    public static List<Integer> getListaCantidad() {
        return ListaCantidad;
    }

    public static void setListaCantidad(List<Integer> ListaCantidad) {
        RecibesDetallesBeans.ListaCantidad = ListaCantidad;
    }

    public static List<String> getListaComentario() {
        return ListaComentario;
    }

    public static void setListaComentario(List<String> ListaComentario) {
        RecibesDetallesBeans.ListaComentario = ListaComentario;
    }

    public static List<String> getListaEsRecargo() {
        return ListaEsRecargo;
    }

    public static void setListaEsRecargo(List<String> ListaEsRecargo) {
        RecibesDetallesBeans.ListaEsRecargo = ListaEsRecargo;
    }

    public static List<Double> getListaExoneracion() {
        return ListaExoneracion;
    }

    public static void setListaExoneracion(List<Double> ListaExoneracion) {
        RecibesDetallesBeans.ListaExoneracion = ListaExoneracion;
    }

    public static List<String> getListaIdRegimen() {
        return ListaIdRegimen;
    }

    public static void setListaIdRegimen(List<String> ListaIdRegimen) {
        RecibesDetallesBeans.ListaIdRegimen = ListaIdRegimen;
    }

    public static List<Double> getListaPago() {
        return ListaPago;
    }

    public static void setListaPago(List<Double> ListaPago) {
        RecibesDetallesBeans.ListaPago = ListaPago;
    }

    public static List<String> getListaRegimen() {
        return ListaRegimen;
    }

    public static void setListaRegimen(List<String> ListaRegimen) {
        RecibesDetallesBeans.ListaRegimen = ListaRegimen;
    }

    public static List<Double> getListaSaldo() {
        return ListaSaldo;
    }

    public static void setListaSaldo(List<Double> ListaSaldo) {
        RecibesDetallesBeans.ListaSaldo = ListaSaldo;
    }

    public static List<Double> getListaSaldoAnterior() {
        return ListaSaldoAnterior;
    }

    public static void setListaSaldoAnterior(List<Double> ListaSaldoAnterior) {
        RecibesDetallesBeans.ListaSaldoAnterior = ListaSaldoAnterior;
    }

    public static List<Double> getListaValor() {
        return ListaValor;
    }

    public static void setListaValor(List<Double> ListaValor) {
        RecibesDetallesBeans.ListaValor = ListaValor;
    }

    public static int getNumeroRegistrosLista() {
        return NumeroRegistrosLista;
    }

    public static void setNumeroRegistrosLista(int NumeroRegistrosLista) {
        RecibesDetallesBeans.NumeroRegistrosLista = NumeroRegistrosLista;
    }

    public String getEsRecargo() {
        return EsRecargo;
    }

    public void setEsRecargo(String EsRecargo) {
        this.EsRecargo = EsRecargo;
    }

    public int getCantidad() {
        return Cantidad;
    }

    public void setCantidad(int Cantidad) {
        this.Cantidad = Cantidad;
    }

    public double getExoneracion() {
        return Exoneracion;
    }

    public void setExoneracion(double Exoneracion) {
        this.Exoneracion = Exoneracion;
    }

    public String getIdMunicipio() {
        return IdMunicipio;
    }

    public void setIdMunicipio(String IdMunicipio) {
        this.IdMunicipio = IdMunicipio;
    }

    public int getIdRecibo() {
        return IdRecibo;
    }

    public void setIdRecibo(int IdRecibo) {
        this.IdRecibo = IdRecibo;
    }

    public String getIdRegimen() {
        return IdRegimen;
    }

    public void setIdRegimen(String IdRegimen) {
        this.IdRegimen = IdRegimen;
    }

    public double getPago() {
        return Pago;
    }

    public void setPago(double Pago) {
        this.Pago = Pago;
    }

    public double getSaldo() {
        return Saldo;
    }

    public void setSaldo(double Saldo) {
        this.Saldo = Saldo;
    }

    public double getValor() {
        return Valor;
    }

    public void setValor(double Valor) {
        this.Valor = Valor;
    }

    public boolean GuardarDetalleRecibo() {
        try {

            if (sesion.Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return false;
            }
            String sql = "INSERT into recibesdetalles values( ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
            PreparedStatement prestDetalles = sesion.con.prepareStatement(sql);
            for (int i = 0; i <= sesion.getNumeroRegistrosRecibosTable(); i++) {

                prestDetalles.setInt(1, IdRecibo);
                prestDetalles.setString(2, sesion.getIdmunicipio());
                prestDetalles.setString(3, sesion.ArrayRecibosTableIdRegimen[i]);
                //prestDetalles.setDouble(4, sesion.ArrayRecibosTableDeuda[i]);
                prestDetalles.setDouble(4, sesion.ArrayRecibosTableValor[i]);
                prestDetalles.setInt(5, sesion.ArrayRecibosTableCantidad[i]);
                prestDetalles.setDouble(6, sesion.ArrayRecibosTablePagos[i]);
                prestDetalles.setDouble(7, sesion.ArrayRecibosTableExoneracion[i]);
                prestDetalles.setString(8, sesion.ArrayRecibosTableEsRecargo[i]);

                prestDetalles.setDouble(9, sesion.ArrayRecibosTableSaldo[i]);
                prestDetalles.setDouble(10, sesion.ArrayRecibosTableSaldoAnterior[i]);//saldo anterior
                prestDetalles.setString(11, sesion.ArrayRecibosTableComentario[i]);//comentario
                int tmp = i + 1;
                int numeropagina = 0;
                if (tmp >= 1 && tmp <= 7) {
                    numeropagina = 1;
                } else {
                    if (tmp >= 8 && tmp <= 14) {
                        numeropagina = 2;
                    } else {
                        if (tmp >= 15 && tmp <= 21) {
                            numeropagina = 3;
                        } else {
                            if (tmp >= 22 && tmp <= 28) {
                                numeropagina = 4;
                            }
                        }
                    }
                }
                prestDetalles.setString(12, sesion.ArrayRecibosTableEstatus[i]);
                prestDetalles.setString(13, sesion.ArrayRecibosTablePeriodo[i]);

                prestDetalles.setDouble(14, sesion.ArrayRecibosTableSoloMorosidad[i]);

                prestDetalles.setInt(15, numeropagina);
                prestDetalles.executeUpdate();
            }


            return true;
        } catch (Exception ex) {
            sesion.MostrarMensajeError("Error", "Clase:RecibesDetallesBeans.java\nMetodo: GuardarDetalleRecibo()\n" + ex.getMessage().toString());

        }
        return false;
    }

    public int getNumeroRegistrosRecibo() {
        try {

            if (sesion.Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return -1;
            }
            String sqlquery = "select count(*) as total from recibesdetalles where  idmunicipio = ? and idrecibo =? ";
            PreparedStatement psquery = sesion.con.prepareStatement(sqlquery);
            psquery.setString(1, sesion.getIdmunicipio());
            psquery.setInt(2, IdRecibo);

            ResultSet rs = psquery.executeQuery();
            rs.last();
            int x = rs.getRow();
            if (x == 0) {
                JOptionPane.showMessageDialog(null, "No existe un recibo con ese numero", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                sesion.con.close();
                return -1;
            }
            rs.beforeFirst();
            rs.next();
            int total = rs.getInt("total");
            sesion.con.close();

            return total;
        } catch (Exception ex) {

            sesion.MostrarMensajeError("Error", "Clase:RecibesBeans.java\nMetodo:getNumeroRegistrosRecibo()\nError: " + ex.getMessage().toString());
        }
        return -1;

    }

    public boolean CargarDetallesRecibos() {
        try {
            NumeroRegistrosLista = -1;


            ListaIdRegimen.removeAll(ListaIdRegimen);
            ListaRegimen.removeAll(ListaRegimen);
            ListaValor.removeAll(ListaValor);
            ListaPago.removeAll(ListaPago);
            ListaCantidad.removeAll(ListaCantidad);
            ListaExoneracion.removeAll(ListaExoneracion);
            ListaSaldo.removeAll(ListaSaldo);
            ListaSaldoAnterior.removeAll(ListaSaldoAnterior);
            ListaEsRecargo.removeAll(ListaEsRecargo);
            ListaComentario.removeAll(ListaComentario);

            ListaEstatus.removeAll(ListaEstatus);
            ListaPeriodo.removeAll(ListaPeriodo);
            ListaSoloMorosidad.removeAll(ListaSoloMorosidad);

            String idMunicipio = sesion.getIdmunicipio();
            String sql = "select recibesdetalles.*, regimen.regimen from  recibesdetalles, regimen where recibesdetalles.idmunicipio='" + idMunicipio + "' and recibesdetalles.idrecibo ='" + this.IdRecibo + "' and recibesdetalles.idregimen = regimen.idregimen and  regimen.activo='si' and regimen.idmunicipio='" + idMunicipio + "'";

            if (sesion.Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                sesion.con.close();
                return false;
            }

            PreparedStatement psquery = sesion.con.prepareStatement(sql);
            ResultSet rs = psquery.executeQuery();
            rs.next();
            int x = rs.getRow();
            if (x == 0) {
                sesion.con.close();
                return false;
            }
            NumeroRegistrosLista++;


            ListaIdRegimen.add(rs.getString("idregimen"));
            ListaRegimen.add(rs.getString("regimen"));
            ListaValor.add(rs.getDouble("valor"));
            ListaPago.add(rs.getDouble("pago"));
            ListaCantidad.add(rs.getInt("cantidad"));
            ListaExoneracion.add(rs.getDouble("exoneracion"));
            ListaSaldo.add(rs.getDouble("saldo"));
            ListaSaldoAnterior.add(rs.getDouble("saldoanterior"));
            ListaEsRecargo.add(rs.getString("esrecargo"));
            ListaComentario.add(rs.getString("comentario"));
            ListaEstatus.add(rs.getString("estatus"));
            ListaPeriodo.add(rs.getString("periodo"));
            ListaSoloMorosidad.add(rs.getDouble("solomorosidad"));
            /*
            List<String> v = new ArrayList<String>();
            v.add("test");
            Integer i = v.get(0);
             */
// Bucle para cada resultado en la consulta
            while (rs.next()) {
                ListaIdRegimen.add(rs.getString("idregimen"));
                ListaRegimen.add(rs.getString("regimen"));
                ListaValor.add(rs.getDouble("valor"));
                ListaPago.add(rs.getDouble("pago"));
                ListaCantidad.add(rs.getInt("cantidad"));
                ListaExoneracion.add(rs.getDouble("exoneracion"));
                ListaSaldo.add(rs.getDouble("saldo"));
                ListaSaldoAnterior.add(rs.getDouble("saldoanterior"));
                ListaEsRecargo.add(rs.getString("esrecargo"));
                ListaComentario.add(rs.getString("comentario"));
                ListaEstatus.add(rs.getString("estatus"));
                ListaPeriodo.add(rs.getString("periodo"));
                ListaSoloMorosidad.add(rs.getDouble("solomorosidad"));
                NumeroRegistrosLista++;

            }
            sesion.con.close();
            return true;
        } catch (Exception ex) {
            sesion.MostrarMensajeError("Error ", "Clase: RegimenContribuyentesBeans.java\n CargarImpuestosPorContribuyente()\n " + ex.getMessage().toString());

        }
        return false;
    }
}
